{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(Transaction_data_Simulator)=\n",
    "# Transaction data simulator\n",
    "\n",
    "\n",
    "This section presents a transaction data simulator of legitimate and fraudulent transactions. This simulator will be used throughout the rest of this book to motivate and assess the efficiency of different fraud detection techniques in a reproducible way. \n",
    "\n",
    "A simulation is necessarily an approximation of reality. Compared to the complexity of the dynamics underlying real-world payment card transaction data, the data simulator that we present below follows a simple design. \n",
    "\n",
    "This simple design is a choice. First, having simple rules to generate transactions and fraudulent behaviors will help in interpreting the kind of patterns that different fraud detection techniques can identify. Second, while simple in its design, the data simulator will generate datasets that are challenging to deal with. \n",
    "\n",
    "The simulated datasets will highlight most of the issues that practitioners of fraud detection face using real-world data. In particular, they will include class imbalance (less than 1% of fraudulent transactions), a mix of numerical and categorical features (with categorical features involving a very large number of values), non-trivial relationships between features, and time-dependent fraud scenarios.\n",
    "\n",
    "<h3>Design choices</h3>\n",
    "\n",
    "<h4>Transaction features</h4>\n",
    "\n",
    "Our focus will be on the most essential features of a transaction. In essence, a payment card transaction consists of any amount paid to a merchant by a customer at a certain time. The six main features that summarise a transaction therefore are:\n",
    "\n",
    "1. The transaction ID: A unique identifier for the transaction\n",
    "2. The date and time: Date and time at which the transaction occurs\n",
    "3. The customer ID: The identifier for the customer. Each customer has a unique identifier\n",
    "4. The terminal ID: The identifier for the merchant (or more precisely the terminal). Each terminal has a unique identifier\n",
    "5. The transaction amount: The amount of the transaction.\n",
    "6. The fraud label: A binary variable, with the value $0$ for a legitimate transaction, or the value $1$ for a fraudulent transaction.\n",
    "\n",
    "These features will be referred to as `TRANSACTION_ID`, `TX_DATETIME`, `CUSTOMER_ID`, `TERMINAL_ID`, `TX_AMOUNT`, and `TX_FRAUD`. \n",
    "\n",
    "The goal of the transaction data simulator will be to generate a table of transactions with these features. This table will be referred to as the *labeled transactions* table. Such a table is illustrated in Fig. 1. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![alt text](images/tx_table.png)\n",
    "<p style=\"text-align: center;\">\n",
    "Fig. 1. Example of labeled transaction table. Each transaction is represented as a row in the table,<br> together with its label (TX_FRAUD variable, 0 for legitimate, and 1 for fraudulent transactions).\n",
    "</p>\n",
    "    \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "# Necessary imports for this notebook\n",
    "import os\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "import datetime\n",
    "import time\n",
    "\n",
    "import random\n",
    "\n",
    "# For plotting\n",
    "%matplotlib inline\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "sns.set_style('darkgrid', {'axes.facecolor': '0.9'})\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Customer profiles generation\n",
    "\n",
    "Each customer will be defined by the following properties:\n",
    "\n",
    "* `CUSTOMER_ID`: The customer unique ID\n",
    "* (`x_customer_id`,`y_customer_id`): A pair of real coordinates (`x_customer_id`,`y_customer_id`) in a 100 * 100 grid, that defines the geographical location of the customer\n",
    "* (`mean_amount`, `std_amount`):  The mean and standard deviation of the transaction amounts for the customer, assuming that the transaction amounts follow a normal distribution. The `mean_amount` will be drawn from a uniform distribution (5,100) and the `std_amount` will be set as the `mean_amount` divided by two. \n",
    "* `mean_nb_tx_per_day`:  The average number of transactions per day for the customer, assuming that the number of transactions per day follows a Poisson distribution. This number will be drawn from a uniform distribution (0,4). \n",
    "\n",
    "The `generate_customer_profiles_table` function provides an implementation for generating a table of customer profiles. It takes as input the number of customers for which to generate a profile and a random state for reproducibility. It returns a DataFrame containing the properties for each customer. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h4>Transaction generation process</h4>\n",
    "\n",
    "The simulation will consist of five main steps:\n",
    "\n",
    "1. Generation of customer profiles: Every customer is different in their spending habits. This will be simulated by defining some properties for each customer. The main properties will be their geographical location, their spending frequency, and their spending amounts. The customer properties will be represented as a table, referred to as the *customer profile table*. \n",
    "2. Generation of terminal profiles: Terminal properties will simply consist of a geographical location. The terminal properties will be represented as a table, referred to as the *terminal profile table*.\n",
    "3. Association of customer profiles to terminals: We will assume that customers only make transactions on terminals that are within a radius of $r$ of their geographical locations. This makes the simple assumption that a customer only makes transactions on terminals that are geographically close to their location. This step will consist of adding a feature 'list_terminals' to each customer profile, that contains the set of terminals that a customer can use.\n",
    "4. Generation of transactions: The simulator will loop over the set of customer profiles, and generate transactions according to their properties (spending frequencies and amounts, and available terminals). This will result in a table of transactions.\n",
    "5. Generation of fraud scenarios: This last step will label the transactions as legitimate or genuine. This will be done by following three different fraud scenarios.\n",
    "\n",
    "The transaction generation process is illustrated below. \n",
    "\n",
    "![alt text](images/FlowDatasetGenerator.png)\n",
    "<p style=\"text-align: center;\">\n",
    "Fig. 2. Transaction generation process. The customer and terminal profiles are used to generate  <br> a set of transactions. The final step, which generates fraud scenarios, provides the labeled transactions table.\n",
    "   \n",
    "\n",
    "The following sections detail the implementation for each of these steps. \n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "def generate_customer_profiles_table(n_customers, random_state=0):\n",
    "    \n",
    "    np.random.seed(random_state)\n",
    "        \n",
    "    customer_id_properties=[]\n",
    "    \n",
    "    # Generate customer properties from random distributions \n",
    "    for customer_id in range(n_customers):\n",
    "        \n",
    "        x_customer_id = np.random.uniform(0,100)\n",
    "        y_customer_id = np.random.uniform(0,100)\n",
    "        \n",
    "        mean_amount = np.random.uniform(5,100) # Arbitrary (but sensible) value \n",
    "        std_amount = mean_amount/2 # Arbitrary (but sensible) value\n",
    "        \n",
    "        mean_nb_tx_per_day = np.random.uniform(0,4) # Arbitrary (but sensible) value \n",
    "        \n",
    "        customer_id_properties.append([customer_id,\n",
    "                                      x_customer_id, y_customer_id,\n",
    "                                      mean_amount, std_amount,\n",
    "                                      mean_nb_tx_per_day])\n",
    "        \n",
    "    customer_profiles_table = pd.DataFrame(customer_id_properties, columns=['CUSTOMER_ID',\n",
    "                                                                      'x_customer_id', 'y_customer_id',\n",
    "                                                                      'mean_amount', 'std_amount',\n",
    "                                                                      'mean_nb_tx_per_day'])\n",
    "    \n",
    "    return customer_profiles_table"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As an example, let us generate a customer profile table for five customers:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CUSTOMER_ID</th>\n",
       "      <th>x_customer_id</th>\n",
       "      <th>y_customer_id</th>\n",
       "      <th>mean_amount</th>\n",
       "      <th>std_amount</th>\n",
       "      <th>mean_nb_tx_per_day</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>54.881350</td>\n",
       "      <td>71.518937</td>\n",
       "      <td>62.262521</td>\n",
       "      <td>31.131260</td>\n",
       "      <td>2.179533</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>42.365480</td>\n",
       "      <td>64.589411</td>\n",
       "      <td>46.570785</td>\n",
       "      <td>23.285393</td>\n",
       "      <td>3.567092</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>96.366276</td>\n",
       "      <td>38.344152</td>\n",
       "      <td>80.213879</td>\n",
       "      <td>40.106939</td>\n",
       "      <td>2.115580</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>56.804456</td>\n",
       "      <td>92.559664</td>\n",
       "      <td>11.748426</td>\n",
       "      <td>5.874213</td>\n",
       "      <td>0.348517</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>2.021840</td>\n",
       "      <td>83.261985</td>\n",
       "      <td>78.924891</td>\n",
       "      <td>39.462446</td>\n",
       "      <td>3.480049</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   CUSTOMER_ID  x_customer_id  y_customer_id  mean_amount  std_amount  \\\n",
       "0            0      54.881350      71.518937    62.262521   31.131260   \n",
       "1            1      42.365480      64.589411    46.570785   23.285393   \n",
       "2            2      96.366276      38.344152    80.213879   40.106939   \n",
       "3            3      56.804456      92.559664    11.748426    5.874213   \n",
       "4            4       2.021840      83.261985    78.924891   39.462446   \n",
       "\n",
       "   mean_nb_tx_per_day  \n",
       "0            2.179533  \n",
       "1            3.567092  \n",
       "2            2.115580  \n",
       "3            0.348517  \n",
       "4            3.480049  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "n_customers = 5\n",
    "customer_profiles_table = generate_customer_profiles_table(n_customers, random_state = 0)\n",
    "customer_profiles_table"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Terminal profiles generation\n",
    "\n",
    "Each terminal will be defined by the following properties:\n",
    "\n",
    "* `TERMINAL_ID`: The terminal ID\n",
    "* (`x_terminal_id`,`y_terminal_id`): A pair of real coordinates (`x_terminal_id`,`y_terminal_id`) in a 100 * 100 grid, that defines the geographical location of the terminal\n",
    "\n",
    "The `generate_terminal_profiles_table` function provides an implementation for generating a table of terminal profiles. It takes as input the number of terminals for which to generate a profile and a random state for reproducibility. It returns a DataFrame containing the properties for each terminal. \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "def generate_terminal_profiles_table(n_terminals, random_state=0):\n",
    "    \n",
    "    np.random.seed(random_state)\n",
    "        \n",
    "    terminal_id_properties=[]\n",
    "    \n",
    "    # Generate terminal properties from random distributions \n",
    "    for terminal_id in range(n_terminals):\n",
    "        \n",
    "        x_terminal_id = np.random.uniform(0,100)\n",
    "        y_terminal_id = np.random.uniform(0,100)\n",
    "        \n",
    "        terminal_id_properties.append([terminal_id,\n",
    "                                      x_terminal_id, y_terminal_id])\n",
    "                                       \n",
    "    terminal_profiles_table = pd.DataFrame(terminal_id_properties, columns=['TERMINAL_ID',\n",
    "                                                                      'x_terminal_id', 'y_terminal_id'])\n",
    "    \n",
    "    return terminal_profiles_table"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As an example, let us generate a customer terminal table for five terminals:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TERMINAL_ID</th>\n",
       "      <th>x_terminal_id</th>\n",
       "      <th>y_terminal_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>54.881350</td>\n",
       "      <td>71.518937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>60.276338</td>\n",
       "      <td>54.488318</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>42.365480</td>\n",
       "      <td>64.589411</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>43.758721</td>\n",
       "      <td>89.177300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>96.366276</td>\n",
       "      <td>38.344152</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   TERMINAL_ID  x_terminal_id  y_terminal_id\n",
       "0            0      54.881350      71.518937\n",
       "1            1      60.276338      54.488318\n",
       "2            2      42.365480      64.589411\n",
       "3            3      43.758721      89.177300\n",
       "4            4      96.366276      38.344152"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "n_terminals = 5\n",
    "terminal_profiles_table = generate_terminal_profiles_table(n_terminals, random_state = 0)\n",
    "terminal_profiles_table"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Association of customer profiles to terminals\n",
    "\n",
    "Let us now associate terminals with the customer profiles. In our design, customers can only perform transactions on terminals that are within a radius of `r` of their geographical locations. \n",
    "\n",
    "Let us first write a function, called `get_list_terminals_within_radius`, which finds these terminals for a customer profile. The function will take as input a customer profile (any row in the customer profiles table), an array that contains the geographical location of all terminals, and the radius `r`. It will return the list of terminals within a radius of `r` for that customer. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "def get_list_terminals_within_radius(customer_profile, x_y_terminals, r):\n",
    "    \n",
    "    # Use numpy arrays in the following to speed up computations\n",
    "    \n",
    "    # Location (x,y) of customer as numpy array\n",
    "    x_y_customer = customer_profile[['x_customer_id','y_customer_id']].values.astype(float)\n",
    "    \n",
    "    # Squared difference in coordinates between customer and terminal locations\n",
    "    squared_diff_x_y = np.square(x_y_customer - x_y_terminals)\n",
    "    \n",
    "    # Sum along rows and compute suared root to get distance\n",
    "    dist_x_y = np.sqrt(np.sum(squared_diff_x_y, axis=1))\n",
    "    \n",
    "    # Get the indices of terminals which are at a distance less than r\n",
    "    available_terminals = list(np.where(dist_x_y<r)[0])\n",
    "    \n",
    "    # Return the list of terminal IDs\n",
    "    return available_terminals\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As an example, let us get the list of terminals that are within a radius $r=50$ of the last customer:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[2, 3]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# We first get the geographical locations of all terminals as a numpy array\n",
    "x_y_terminals = terminal_profiles_table[['x_terminal_id','y_terminal_id']].values.astype(float)\n",
    "# And get the list of terminals within radius of $50$ for the last customer\n",
    "get_list_terminals_within_radius(customer_profiles_table.iloc[4], x_y_terminals=x_y_terminals, r=50)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The list contains the third and fourth terminals, which are indeed the only ones within a radius of $50$ of the last customer. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TERMINAL_ID</th>\n",
       "      <th>x_terminal_id</th>\n",
       "      <th>y_terminal_id</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>54.881350</td>\n",
       "      <td>71.518937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>60.276338</td>\n",
       "      <td>54.488318</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>42.365480</td>\n",
       "      <td>64.589411</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>43.758721</td>\n",
       "      <td>89.177300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>96.366276</td>\n",
       "      <td>38.344152</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   TERMINAL_ID  x_terminal_id  y_terminal_id\n",
       "0            0      54.881350      71.518937\n",
       "1            1      60.276338      54.488318\n",
       "2            2      42.365480      64.589411\n",
       "3            3      43.758721      89.177300\n",
       "4            4      96.366276      38.344152"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "terminal_profiles_table"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For better visualization, let us plot \n",
    "\n",
    "* The locations of all terminals (in red)\n",
    "* The location of the last customer (in blue)\n",
    "* The region within radius of 50 of the first customer (in green)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "%%capture\n",
    "\n",
    "terminals_available_to_customer_fig, ax = plt.subplots(figsize=(5,5))\n",
    "\n",
    "# Plot locations of terminals\n",
    "ax.scatter(terminal_profiles_table.x_terminal_id.values, \n",
    "           terminal_profiles_table.y_terminal_id.values, \n",
    "           color='blue', label = 'Locations of terminals')\n",
    "\n",
    "# Plot location of the last customer\n",
    "customer_id=4\n",
    "ax.scatter(customer_profiles_table.iloc[customer_id].x_customer_id, \n",
    "           customer_profiles_table.iloc[customer_id].y_customer_id, \n",
    "           color='red',label=\"Location of last customer\")\n",
    "\n",
    "ax.legend(loc = 'upper left', bbox_to_anchor=(1.05, 1))\n",
    "\n",
    "# Plot the region within a radius of 50 of the last customer\n",
    "circ = plt.Circle((customer_profiles_table.iloc[customer_id].x_customer_id,\n",
    "                   customer_profiles_table.iloc[customer_id].y_customer_id), radius=50, color='g', alpha=0.2)\n",
    "ax.add_patch(circ)\n",
    "\n",
    "fontsize=15\n",
    "\n",
    "ax.set_title(\"Green circle: \\n Terminals within a radius of 50 \\n of the last customer\")\n",
    "ax.set_xlim([0, 100])\n",
    "ax.set_ylim([0, 100])\n",
    "    \n",
    "ax.set_xlabel('x_terminal_id', fontsize=fontsize)\n",
    "ax.set_ylabel('y_terminal_id', fontsize=fontsize)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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v13i8StXruCll14CUNQtrm3btvf0Oqmpqfar8Kti7ty5pS48q24//fRTpe9VJyKqLrx4jqrF1q1b8f3335e6HeratWv4448/XFRVaYcPH8aTTz7p1Nf49ddfkZGR4dTXICIqD4OdHPbLL79gwYIFyMnJgUwmw4QJEzBkyBCMHj0aQgg8//zzSEpKsjdtsVqtmDt3LjIyMvDss8/i9ddfh9VqRWJiIs6cOQOdToeEhATExcUBKJqopPiK+rp16yIpKalU//I7ldf61WKxlNmCdd26dbh58yamT5+OpUuXonXr1iW2t3btWnz++edQKpVo0KABFi9ejD179thb0gIo0aL2P//5DxYvXmy/A+CFF15ATEwM3nnnHeh0OsyaNQspKSnYunUrNm3aBLlcjlq1amHevHl44IEHMHPmTGg0Gly8eBFZWVmIjY1FYGAgvvvuO2RmZmLhwoXo0qULTCYTli9fjuPHj8NqtaJFixaYO3cufH19ERsbi5iYGFy4cAHTpk1D3759nfGjJyJ3IogcYDabRe/evcXu3buFEELcuHFDdOvWTaSlpQkhhGjSpInIysoqtd6PP/4oBgwYIIQQ4sqVK6JJkybi3//+txBCiG+++Ub07t1bCCHE559/LuLj44XZbBZCCLFlyxbx3HPPldrejh07xMSJE4UQQkydOlX8+OOPQggh8vPzRadOncSZM2fE8ePHRb9+/YTNZhNCCLF06VJx4sQJIYQQvXr1Ej/99FOp7e7du1c8+uijIicnRwghxKJFi8S7775b4vX++vpjx44VX331lRBCiHPnzon58+eXWubw4cOiT58+9vdmx44don///sJms4kZM2aIESNGCJPJJG7evCmaNGkiPvroIyGEEB9++KEYP368EEKIVatWicWLF9vH8+abb4qkpCT7eFavXl1qPETkubjHTg75888/YTQa7feUh4eH49FHH8XBgwcrdd7cy8vLvoferFkzZGVlAShqwnLmzBk8/vjjAIq6phkMhgq3VV4L12bNmt21BetfHTlyBP369UNAQAAA2Kc3LZ5gpiz9+/fHggUL8O2336Jr166YNm1aqWUOHjyIxx57DMHBwQCAYcOG4Y033sDVq1cBFLW49fLyQmhoKHx8fMps7fv9999Dp9Ph8OHDAACz2YyQkBD7a5Q1YxsReS4GOznEarWW6hsuhLhry9K/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\n",
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "terminals_available_to_customer_fig"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Computing the list of available terminals for each customer is then straightforward, using the panda `apply` function. We store the results as a new column `available_terminals` in the customer profiles table."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CUSTOMER_ID</th>\n",
       "      <th>x_customer_id</th>\n",
       "      <th>y_customer_id</th>\n",
       "      <th>mean_amount</th>\n",
       "      <th>std_amount</th>\n",
       "      <th>mean_nb_tx_per_day</th>\n",
       "      <th>available_terminals</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>54.881350</td>\n",
       "      <td>71.518937</td>\n",
       "      <td>62.262521</td>\n",
       "      <td>31.131260</td>\n",
       "      <td>2.179533</td>\n",
       "      <td>[0, 1, 2, 3]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>42.365480</td>\n",
       "      <td>64.589411</td>\n",
       "      <td>46.570785</td>\n",
       "      <td>23.285393</td>\n",
       "      <td>3.567092</td>\n",
       "      <td>[0, 1, 2, 3]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>96.366276</td>\n",
       "      <td>38.344152</td>\n",
       "      <td>80.213879</td>\n",
       "      <td>40.106939</td>\n",
       "      <td>2.115580</td>\n",
       "      <td>[1, 4]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>56.804456</td>\n",
       "      <td>92.559664</td>\n",
       "      <td>11.748426</td>\n",
       "      <td>5.874213</td>\n",
       "      <td>0.348517</td>\n",
       "      <td>[0, 1, 2, 3]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>2.021840</td>\n",
       "      <td>83.261985</td>\n",
       "      <td>78.924891</td>\n",
       "      <td>39.462446</td>\n",
       "      <td>3.480049</td>\n",
       "      <td>[2, 3]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   CUSTOMER_ID  x_customer_id  y_customer_id  mean_amount  std_amount  \\\n",
       "0            0      54.881350      71.518937    62.262521   31.131260   \n",
       "1            1      42.365480      64.589411    46.570785   23.285393   \n",
       "2            2      96.366276      38.344152    80.213879   40.106939   \n",
       "3            3      56.804456      92.559664    11.748426    5.874213   \n",
       "4            4       2.021840      83.261985    78.924891   39.462446   \n",
       "\n",
       "   mean_nb_tx_per_day available_terminals  \n",
       "0            2.179533        [0, 1, 2, 3]  \n",
       "1            3.567092        [0, 1, 2, 3]  \n",
       "2            2.115580              [1, 4]  \n",
       "3            0.348517        [0, 1, 2, 3]  \n",
       "4            3.480049              [2, 3]  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "customer_profiles_table['available_terminals']=customer_profiles_table.apply(lambda x : get_list_terminals_within_radius(x, x_y_terminals=x_y_terminals, r=50), axis=1)\n",
    "customer_profiles_table"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It is worth noting that the radius $r$ controls the number of terminals that will be on average available for each customer. As the number of terminals is increased, this radius should be adapted to match the average number of available terminals per customer that is desired in a simulation.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generation of transactions\n",
    "\n",
    "The customer profiles now contain all the information that we require to generate transactions. The transaction generation will be done by a function `generate_transactions_table` that takes as input a customer profile, a starting date, and a number of days for which to generate transactions. It will return a table of transactions, which follows the format presented above (without the transaction label, which will be added in [fraud scenarios generation](Fraud_Scenarios_Generation)). \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "def generate_transactions_table(customer_profile, start_date = \"2018-04-01\", nb_days = 10):\n",
    "    \n",
    "    customer_transactions = []\n",
    "    \n",
    "    random.seed(int(customer_profile.CUSTOMER_ID))\n",
    "    np.random.seed(int(customer_profile.CUSTOMER_ID))\n",
    "    \n",
    "    # For all days\n",
    "    for day in range(nb_days):\n",
    "        \n",
    "        # Random number of transactions for that day \n",
    "        nb_tx = np.random.poisson(customer_profile.mean_nb_tx_per_day)\n",
    "        \n",
    "        # If nb_tx positive, let us generate transactions\n",
    "        if nb_tx>0:\n",
    "            \n",
    "            for tx in range(nb_tx):\n",
    "                \n",
    "                # Time of transaction: Around noon, std 20000 seconds. This choice aims at simulating the fact that \n",
    "                # most transactions occur during the day.\n",
    "                time_tx = int(np.random.normal(86400/2, 20000))\n",
    "                \n",
    "                # If transaction time between 0 and 86400, let us keep it, otherwise, let us discard it\n",
    "                if (time_tx>0) and (time_tx<86400):\n",
    "                    \n",
    "                    # Amount is drawn from a normal distribution  \n",
    "                    amount = np.random.normal(customer_profile.mean_amount, customer_profile.std_amount)\n",
    "                    \n",
    "                    # If amount negative, draw from a uniform distribution\n",
    "                    if amount<0:\n",
    "                        amount = np.random.uniform(0,customer_profile.mean_amount*2)\n",
    "                    \n",
    "                    amount=np.round(amount,decimals=2)\n",
    "                    \n",
    "                    if len(customer_profile.available_terminals)>0:\n",
    "                        \n",
    "                        terminal_id = random.choice(customer_profile.available_terminals)\n",
    "                    \n",
    "                        customer_transactions.append([time_tx+day*86400, day,\n",
    "                                                      customer_profile.CUSTOMER_ID, \n",
    "                                                      terminal_id, amount])\n",
    "            \n",
    "    customer_transactions = pd.DataFrame(customer_transactions, columns=['TX_TIME_SECONDS', 'TX_TIME_DAYS', 'CUSTOMER_ID', 'TERMINAL_ID', 'TX_AMOUNT'])\n",
    "    \n",
    "    if len(customer_transactions)>0:\n",
    "        customer_transactions['TX_DATETIME'] = pd.to_datetime(customer_transactions[\"TX_TIME_SECONDS\"], unit='s', origin=start_date)\n",
    "        customer_transactions=customer_transactions[['TX_DATETIME','CUSTOMER_ID', 'TERMINAL_ID', 'TX_AMOUNT','TX_TIME_SECONDS', 'TX_TIME_DAYS']]\n",
    "    \n",
    "    return customer_transactions  \n",
    "    \n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let us for example generate transactions for the first customer, for five days, starting at the date 2018-04-01:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TX_DATETIME</th>\n",
       "      <th>CUSTOMER_ID</th>\n",
       "      <th>TERMINAL_ID</th>\n",
       "      <th>TX_AMOUNT</th>\n",
       "      <th>TX_TIME_SECONDS</th>\n",
       "      <th>TX_TIME_DAYS</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2018-04-01 07:19:05</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>123.59</td>\n",
       "      <td>26345</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2018-04-01 19:02:02</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>46.51</td>\n",
       "      <td>68522</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2018-04-01 18:00:16</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>77.34</td>\n",
       "      <td>64816</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2018-04-02 15:13:02</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>32.35</td>\n",
       "      <td>141182</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2018-04-02 14:05:38</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>63.30</td>\n",
       "      <td>137138</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2018-04-02 15:46:51</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>13.59</td>\n",
       "      <td>143211</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2018-04-02 08:51:06</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>54.72</td>\n",
       "      <td>118266</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>2018-04-02 20:24:47</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>51.89</td>\n",
       "      <td>159887</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2018-04-03 12:15:47</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>117.91</td>\n",
       "      <td>216947</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2018-04-03 08:50:09</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>67.72</td>\n",
       "      <td>204609</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>2018-04-03 09:25:49</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>28.46</td>\n",
       "      <td>206749</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>2018-04-03 15:33:14</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>50.25</td>\n",
       "      <td>228794</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>2018-04-03 07:41:24</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>93.26</td>\n",
       "      <td>200484</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>2018-04-04 01:15:35</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>46.40</td>\n",
       "      <td>263735</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>2018-04-04 09:33:58</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>23.26</td>\n",
       "      <td>293638</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>2018-04-05 16:19:09</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>71.96</td>\n",
       "      <td>404349</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>2018-04-05 07:41:19</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>52.69</td>\n",
       "      <td>373279</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           TX_DATETIME  CUSTOMER_ID  TERMINAL_ID  TX_AMOUNT  TX_TIME_SECONDS  \\\n",
       "0  2018-04-01 07:19:05            0            3     123.59            26345   \n",
       "1  2018-04-01 19:02:02            0            3      46.51            68522   \n",
       "2  2018-04-01 18:00:16            0            0      77.34            64816   \n",
       "3  2018-04-02 15:13:02            0            2      32.35           141182   \n",
       "4  2018-04-02 14:05:38            0            3      63.30           137138   \n",
       "5  2018-04-02 15:46:51            0            3      13.59           143211   \n",
       "6  2018-04-02 08:51:06            0            2      54.72           118266   \n",
       "7  2018-04-02 20:24:47            0            3      51.89           159887   \n",
       "8  2018-04-03 12:15:47            0            2     117.91           216947   \n",
       "9  2018-04-03 08:50:09            0            1      67.72           204609   \n",
       "10 2018-04-03 09:25:49            0            1      28.46           206749   \n",
       "11 2018-04-03 15:33:14            0            2      50.25           228794   \n",
       "12 2018-04-03 07:41:24            0            1      93.26           200484   \n",
       "13 2018-04-04 01:15:35            0            0      46.40           263735   \n",
       "14 2018-04-04 09:33:58            0            2      23.26           293638   \n",
       "15 2018-04-05 16:19:09            0            1      71.96           404349   \n",
       "16 2018-04-05 07:41:19            0            2      52.69           373279   \n",
       "\n",
       "    TX_TIME_DAYS  \n",
       "0              0  \n",
       "1              0  \n",
       "2              0  \n",
       "3              1  \n",
       "4              1  \n",
       "5              1  \n",
       "6              1  \n",
       "7              1  \n",
       "8              2  \n",
       "9              2  \n",
       "10             2  \n",
       "11             2  \n",
       "12             2  \n",
       "13             3  \n",
       "14             3  \n",
       "15             4  \n",
       "16             4  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "transaction_table_customer_0=generate_transactions_table(customer_profiles_table.iloc[0], \n",
    "                                                         start_date = \"2018-04-01\", \n",
    "                                                         nb_days = 5)\n",
    "transaction_table_customer_0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can make a quick check that the generated transactions follow the customer profile properties:\n",
    "\n",
    "* The terminal IDs are indeed those in the list of available terminals (0, 1, 2 and 3)\n",
    "* The transaction amounts seem to follow the amount parameters of the customer (`mean_amount`=62.26 and\t`std_amount`=31.13)\n",
    "* The number of transactions per day varies according to the transaction frequency parameters of the customer (`mean_nb_tx_per_day`=2.18).  \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let us now generate the transactions for all customers. This is straightforward using the pandas `groupby` and `apply` methods:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TX_DATETIME</th>\n",
       "      <th>CUSTOMER_ID</th>\n",
       "      <th>TERMINAL_ID</th>\n",
       "      <th>TX_AMOUNT</th>\n",
       "      <th>TX_TIME_SECONDS</th>\n",
       "      <th>TX_TIME_DAYS</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2018-04-01 07:19:05</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>123.59</td>\n",
       "      <td>26345</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2018-04-01 19:02:02</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>46.51</td>\n",
       "      <td>68522</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2018-04-01 18:00:16</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>77.34</td>\n",
       "      <td>64816</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2018-04-02 15:13:02</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>32.35</td>\n",
       "      <td>141182</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2018-04-02 14:05:38</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>63.30</td>\n",
       "      <td>137138</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>60</th>\n",
       "      <td>2018-04-05 07:41:19</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>111.38</td>\n",
       "      <td>373279</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>61</th>\n",
       "      <td>2018-04-05 06:59:59</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>80.36</td>\n",
       "      <td>370799</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>62</th>\n",
       "      <td>2018-04-05 17:23:34</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>53.25</td>\n",
       "      <td>408214</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63</th>\n",
       "      <td>2018-04-05 12:51:38</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>36.44</td>\n",
       "      <td>391898</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64</th>\n",
       "      <td>2018-04-05 12:38:46</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>17.53</td>\n",
       "      <td>391126</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>65 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           TX_DATETIME  CUSTOMER_ID  TERMINAL_ID  TX_AMOUNT  TX_TIME_SECONDS  \\\n",
       "0  2018-04-01 07:19:05            0            3     123.59            26345   \n",
       "1  2018-04-01 19:02:02            0            3      46.51            68522   \n",
       "2  2018-04-01 18:00:16            0            0      77.34            64816   \n",
       "3  2018-04-02 15:13:02            0            2      32.35           141182   \n",
       "4  2018-04-02 14:05:38            0            3      63.30           137138   \n",
       "..                 ...          ...          ...        ...              ...   \n",
       "60 2018-04-05 07:41:19            4            2     111.38           373279   \n",
       "61 2018-04-05 06:59:59            4            3      80.36           370799   \n",
       "62 2018-04-05 17:23:34            4            2      53.25           408214   \n",
       "63 2018-04-05 12:51:38            4            2      36.44           391898   \n",
       "64 2018-04-05 12:38:46            4            3      17.53           391126   \n",
       "\n",
       "    TX_TIME_DAYS  \n",
       "0              0  \n",
       "1              0  \n",
       "2              0  \n",
       "3              1  \n",
       "4              1  \n",
       "..           ...  \n",
       "60             4  \n",
       "61             4  \n",
       "62             4  \n",
       "63             4  \n",
       "64             4  \n",
       "\n",
       "[65 rows x 6 columns]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "transactions_df=customer_profiles_table.groupby('CUSTOMER_ID').apply(lambda x : generate_transactions_table(x.iloc[0], nb_days=5)).reset_index(drop=True)\n",
    "transactions_df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This gives us a set of 65 transactions, with 5 customers, 5 terminals, and 5 days."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3> Scaling up to a larger dataset</h3>\n",
    "\n",
    "We now have all the building blocks to generate a larger dataset. Let us write a `generate_dataset` function, that will take care of running all the previous steps. It will \n",
    "\n",
    "* take as inputs the number of desired customers, terminals and days, as well as the starting date and the radius `r`\n",
    "* return the generated customer and terminal profiles table, and the DataFrame of transactions.\n",
    "\n",
    "```{note}\n",
    "In order to speed up the computations, one can use the `parallel_apply` function of the `pandarallel` module. This function replaces the panda `apply` function, and allows the distribution of the computation on all the available CPUs.\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "def generate_dataset(n_customers = 10000, n_terminals = 1000000, nb_days=90, start_date=\"2018-04-01\", r=5):\n",
    "    \n",
    "    start_time=time.time()\n",
    "    customer_profiles_table = generate_customer_profiles_table(n_customers, random_state = 0)\n",
    "    print(\"Time to generate customer profiles table: {0:.2}s\".format(time.time()-start_time))\n",
    "    \n",
    "    start_time=time.time()\n",
    "    terminal_profiles_table = generate_terminal_profiles_table(n_terminals, random_state = 1)\n",
    "    print(\"Time to generate terminal profiles table: {0:.2}s\".format(time.time()-start_time))\n",
    "    \n",
    "    start_time=time.time()\n",
    "    x_y_terminals = terminal_profiles_table[['x_terminal_id','y_terminal_id']].values.astype(float)\n",
    "    customer_profiles_table['available_terminals'] = customer_profiles_table.apply(lambda x : get_list_terminals_within_radius(x, x_y_terminals=x_y_terminals, r=r), axis=1)\n",
    "    # With Pandarallel\n",
    "    #customer_profiles_table['available_terminals'] = customer_profiles_table.parallel_apply(lambda x : get_list_closest_terminals(x, x_y_terminals=x_y_terminals, r=r), axis=1)\n",
    "    customer_profiles_table['nb_terminals']=customer_profiles_table.available_terminals.apply(len)\n",
    "    print(\"Time to associate terminals to customers: {0:.2}s\".format(time.time()-start_time))\n",
    "    \n",
    "    start_time=time.time()\n",
    "    transactions_df=customer_profiles_table.groupby('CUSTOMER_ID').apply(lambda x : generate_transactions_table(x.iloc[0], nb_days=nb_days)).reset_index(drop=True)\n",
    "    # With Pandarallel\n",
    "    #transactions_df=customer_profiles_table.groupby('CUSTOMER_ID').parallel_apply(lambda x : generate_transactions_table(x.iloc[0], nb_days=nb_days)).reset_index(drop=True)\n",
    "    print(\"Time to generate transactions: {0:.2}s\".format(time.time()-start_time))\n",
    "    \n",
    "    # Sort transactions chronologically\n",
    "    transactions_df=transactions_df.sort_values('TX_DATETIME')\n",
    "    # Reset indices, starting from 0\n",
    "    transactions_df.reset_index(inplace=True,drop=True)\n",
    "    transactions_df.reset_index(inplace=True)\n",
    "    # TRANSACTION_ID are the dataframe indices, starting from 0\n",
    "    transactions_df.rename(columns = {'index':'TRANSACTION_ID'}, inplace = True)\n",
    "    \n",
    "    return (customer_profiles_table, terminal_profiles_table, transactions_df)\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let us generate a dataset that features \n",
    "\n",
    "* 5000 customers\n",
    "* 10000 terminals\n",
    "* 183 days of transactions (which corresponds to a simulated period from 2018/04/01 to 2018/09/30)\n",
    "\n",
    "The starting date is arbitrarily fixed at 2018/04/01. The radius $r$ is set to 5, which corresponds to around 100 available terminals for each customer.\n",
    "\n",
    "It takes around 3 minutes to generate this dataset on a standard laptop."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Time to generate customer profiles table: 0.062s\n",
      "Time to generate terminal profiles table: 0.041s\n",
      "Time to associate terminals to customers: 0.95s\n",
      "Time to generate transactions: 7e+01s\n"
     ]
    }
   ],
   "source": [
    "(customer_profiles_table, terminal_profiles_table, transactions_df)=\\\n",
    "    generate_dataset(n_customers = 5000, \n",
    "                     n_terminals = 10000, \n",
    "                     nb_days=183, \n",
    "                     start_date=\"2018-04-01\", \n",
    "                     r=5)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A total of 1754155 transactions were generated. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1754155, 7)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "transactions_df.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that this number is low compared to real-world fraud detection systems, where millions of transactions may need to be processed every day. This will however be enough for the purpose of this book, in particular to keep reasonable executions times."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TRANSACTION_ID</th>\n",
       "      <th>TX_DATETIME</th>\n",
       "      <th>CUSTOMER_ID</th>\n",
       "      <th>TERMINAL_ID</th>\n",
       "      <th>TX_AMOUNT</th>\n",
       "      <th>TX_TIME_SECONDS</th>\n",
       "      <th>TX_TIME_DAYS</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>2018-04-01 00:00:31</td>\n",
       "      <td>596</td>\n",
       "      <td>3156</td>\n",
       "      <td>57.16</td>\n",
       "      <td>31</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>2018-04-01 00:02:10</td>\n",
       "      <td>4961</td>\n",
       "      <td>3412</td>\n",
       "      <td>81.51</td>\n",
       "      <td>130</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>2018-04-01 00:07:56</td>\n",
       "      <td>2</td>\n",
       "      <td>1365</td>\n",
       "      <td>146.00</td>\n",
       "      <td>476</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>2018-04-01 00:09:29</td>\n",
       "      <td>4128</td>\n",
       "      <td>8737</td>\n",
       "      <td>64.49</td>\n",
       "      <td>569</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>2018-04-01 00:10:34</td>\n",
       "      <td>927</td>\n",
       "      <td>9906</td>\n",
       "      <td>50.99</td>\n",
       "      <td>634</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1754150</th>\n",
       "      <td>1754150</td>\n",
       "      <td>2018-09-30 23:56:36</td>\n",
       "      <td>161</td>\n",
       "      <td>655</td>\n",
       "      <td>54.24</td>\n",
       "      <td>15810996</td>\n",
       "      <td>182</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1754151</th>\n",
       "      <td>1754151</td>\n",
       "      <td>2018-09-30 23:57:38</td>\n",
       "      <td>4342</td>\n",
       "      <td>6181</td>\n",
       "      <td>1.23</td>\n",
       "      <td>15811058</td>\n",
       "      <td>182</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1754152</th>\n",
       "      <td>1754152</td>\n",
       "      <td>2018-09-30 23:58:21</td>\n",
       "      <td>618</td>\n",
       "      <td>1502</td>\n",
       "      <td>6.62</td>\n",
       "      <td>15811101</td>\n",
       "      <td>182</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1754153</th>\n",
       "      <td>1754153</td>\n",
       "      <td>2018-09-30 23:59:52</td>\n",
       "      <td>4056</td>\n",
       "      <td>3067</td>\n",
       "      <td>55.40</td>\n",
       "      <td>15811192</td>\n",
       "      <td>182</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1754154</th>\n",
       "      <td>1754154</td>\n",
       "      <td>2018-09-30 23:59:57</td>\n",
       "      <td>3542</td>\n",
       "      <td>9849</td>\n",
       "      <td>23.59</td>\n",
       "      <td>15811197</td>\n",
       "      <td>182</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1754155 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         TRANSACTION_ID         TX_DATETIME CUSTOMER_ID TERMINAL_ID  \\\n",
       "0                     0 2018-04-01 00:00:31         596        3156   \n",
       "1                     1 2018-04-01 00:02:10        4961        3412   \n",
       "2                     2 2018-04-01 00:07:56           2        1365   \n",
       "3                     3 2018-04-01 00:09:29        4128        8737   \n",
       "4                     4 2018-04-01 00:10:34         927        9906   \n",
       "...                 ...                 ...         ...         ...   \n",
       "1754150         1754150 2018-09-30 23:56:36         161         655   \n",
       "1754151         1754151 2018-09-30 23:57:38        4342        6181   \n",
       "1754152         1754152 2018-09-30 23:58:21         618        1502   \n",
       "1754153         1754153 2018-09-30 23:59:52        4056        3067   \n",
       "1754154         1754154 2018-09-30 23:59:57        3542        9849   \n",
       "\n",
       "         TX_AMOUNT TX_TIME_SECONDS TX_TIME_DAYS  \n",
       "0            57.16              31            0  \n",
       "1            81.51             130            0  \n",
       "2           146.00             476            0  \n",
       "3            64.49             569            0  \n",
       "4            50.99             634            0  \n",
       "...            ...             ...          ...  \n",
       "1754150      54.24        15810996          182  \n",
       "1754151       1.23        15811058          182  \n",
       "1754152       6.62        15811101          182  \n",
       "1754153      55.40        15811192          182  \n",
       "1754154      23.59        15811197          182  \n",
       "\n",
       "[1754155 rows x 7 columns]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "transactions_df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As a sanity check, let us plot the distribution of transaction amounts and transaction times. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "%%capture\n",
    "\n",
    "distribution_amount_times_fig, ax = plt.subplots(1, 2, figsize=(18,4))\n",
    "\n",
    "amount_val = transactions_df[transactions_df.TX_TIME_DAYS<10]['TX_AMOUNT'].sample(n=10000).values\n",
    "time_val = transactions_df[transactions_df.TX_TIME_DAYS<10]['TX_TIME_SECONDS'].sample(n=10000).values\n",
    "\n",
    "sns.distplot(amount_val, ax=ax[0], color='r', hist = True, kde = False)\n",
    "ax[0].set_title('Distribution of transaction amounts', fontsize=14)\n",
    "ax[0].set_xlim([min(amount_val), max(amount_val)])\n",
    "ax[0].set(xlabel = \"Amount\", ylabel=\"Number of transactions\")\n",
    "\n",
    "# We divide the time variables by 86400 to transform seconds to days in the plot\n",
    "sns.distplot(time_val/86400, ax=ax[1], color='b', bins = 100, hist = True, kde = False)\n",
    "ax[1].set_title('Distribution of transaction times', fontsize=14)\n",
    "ax[1].set_xlim([min(time_val/86400), max(time_val/86400)])\n",
    "ax[1].set_xticks(range(10))\n",
    "ax[1].set(xlabel = \"Time (days)\", ylabel=\"Number of transactions\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABB8AAAEVCAYAAACom01pAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzde1yUZf7/8fccGMQZ1KSTG2JaaqmRViuaadHmUnS2RKWw1Gy1rKTaPKPlISszW1NrrbZCTS1NraitiNa0lmrrp2VSSmpp31oDM2achtP8/nAdGQQGxplhBl7Px8OH3Pdcc8/nvu4b5prPXAeD2+12CwAAAAAAIEiMjR0AAAAAAABo2kg+AAAAAACAoCL5AAAAAAAAgorkAwAAAAAACCqSDwAAAAAAIKhIPgAAAAAAgKAi+YCwdOmll6pr167q2rWrzjrrLPXq1UtDhw7Vhx9+6FWua9eu+uijj3wer6ioSDk5ObU+vnbtWg0YMECSlJ+fr65du6q8vNyv2B0Oh9auXet1Lq+88opfxzpeDz74oBITE3XTTTcd81j1OCPFDz/8oA8++ECStHfvXnXt2lV79uxp3KAa2fbt2/XZZ581dhgA0GzRbgkM2i3+Ky0t1cqVKz3bGRkZeuKJJwL+OsDxIPmAsDVx4kRt2rRJ//rXv7Rq1Sqdd955+stf/uL1pr1p0yZdcMEFPo81b948vf/++7U+npqaqnXr1gUk7n/84x9eb9qvvvqqrr766oAcuyG2b9+uFStWaOHChVqwYMExj1ePM1JMnjxZX3zxhSSpXbt22rRpk+Lj4xs5qsZ15513ateuXY0dBgA0a7Rbjg/tluPz5ptvavHixZ7thQsX6vbbbw/46wDHw9zYAQC1sdlsOumkkyRJp5xyih544AHt379fDz/8sF5//XVJ8jzui9vtrvPxFi1aqEWLFscXcC2v1bZt24Act6FKSkokSRdeeKGioqKOedxXnUQCk8lU73sAAIBgot1yfGi3HJ/q9dOmTZugvA5wPOj5gIgyZMgQffvtt57ualW7L+bn52vQoEFKTEzUJZdcomeeeUbS4czva6+9ptdff12XXnqp53kLFixQnz59dOutt3p1Xzxi+fLl6tOnj5KSkrRkyRLP/oULF2rYsGFeZY90UVy7dq2eeuopff755+ratavXY5JUWVmpZ599VpdddpkSExN18803q6CgwHOcrl27at26dbr66qvVq1cvZWRk6Pvvv6+1Pr744gsNGzZMPXv21KWXXqrly5dLOtwdMyMjQ5LUo0ePY7op1hbno48+qosuukipqakqLy9XXl6err/+ep1zzjk6//zzNX78eNntdk89ZGZm6qGHHtL555+v5ORkT51L0jfffKObbrpJPXv2VL9+/TR37lxPl1C73a4pU6aob9++6tGjh1JSUvTPf/7T89wDBw7ovvvu0/nnn6++fftq9uzZKi8v18SJE/XJJ5/o6aefVkZGxjHdFw8ePKhp06bpwgsv1Hnnnaf77rtPv/76q+f+GDBggFatWqUBAwYoKSlJf/3rX/X777/XWLdlZWV65JFHNGDAAHXv3l3JyclasWKF1zVftWqVbrjhBiUmJmrUqFHat2+fxo0bp3PPPVfXXXedCgsLfV4r6fC3Zffff7/X61e9ty+99FItW7ZMQ4cO1bnnnqsbb7xRW7dulXS4W+W+ffs0depUTZw4UZL05JNPqn///jrnnHM0ZMgQzzcuAIDQot3ijXZLcNot+fn5mjRpkn7++Wd17dpVe/fu9Rp2MXHiRM2dO1eZmZk699xzdeWVV6qgoEBPPPGELrjgAl188cV65513PMf76aefdMcdd6hnz5665JJLNG/ePJWWlko63D6aPn26+vbtq3PPPVcjRozQd999V+s1B6oi+YCIcsYZZ0iSdu7c6bW/oqJCd999t5KTk5WTk6OsrCwtWrRIH374oUaOHKkrrrhCKSkpevXVVz3Pyc3N1YoVKzRlypQaX+uNN97Q888/rzlz5uj555+vV1e/1NRUjRw5UomJidq0adMxjy9atEjPP/+8Jk2apNdee03x8fG67bbbPG+MkvTUU09p8uTJeumll/TLL79o/vz5Nb5WYWGhbrnlFv3xj3/Ua6+9prvuukuPPfaY3nrrLaWmpmrhwoWSpI0bNyo1NbVecW7YsEHPPvusHn/8cf3f//2f7rrrLg0dOlRvvfWWnnzySf373//Wyy+/7Cn/7rvvymQy6ZVXXtGQIUM0f/58z7X561//qk6dOun111/XggULtH79ek/9P/zwwyosLNTzzz+vN954Q3/84x81bdo0zxvbuHHjtG/fPr344otatGiR3nvvPS1dulRTpkxRr169dMstt3jOr6px48Zp+/btevrpp/XCCy9o165deuCBBzyPHxlD+/e//12zZ8/WO++8U+v40aVLl+r999/X3/72N7399tu6/vrrNWvWLP3888+eMn/729+UmZmp5cuX66uvvtL111+v/v3765VXXpHRaPR0G63rWtXXU089pdtuu02rVq1SdHS0Zs6cKelwY+rUU0/VxIkTNWXKFL377rtavny55s2bp5ycHHXr1k133323Kisr6/1aAIDAoN1yFO2W4LVbevXqpcmTJ+ukk07Spk2b1K5du2PKLFu2TOeff77Wr1+v2NhYZWRk6MCBA1q1apX69eunadOmye12y+12684771Tr1q21Zs0azZs3Tx988IHnui5fvlybN2/WM888ow0bNshqtWrSpEk1XnOgOoZdIKLExsZKOjzpUFUlJSX69ddfFRcXp/j4eMXHx+uFF15Q+/btZbVa1aJFC5WXl3t1JRwyZIg6deokSfryyy+Pea1Zs2apa9eu6tatm2655Ra9/PLLGjx4cJ3xtWjRQi1btpTZbD6mW53b7dayZct0zz336E9/+pMkaebMmRo4cKDWr1/vmVzplltuUd++fSVJw4YN04svvljja61evVpdu3bVvffeK0nq2LGjCgsL9eyzz+qKK65Q69atJUlxcXEym71/1WuL8+qrr9ZZZ50lSdq9e7emTJmiIUOGSJLi4+N14YUXejWgYmNjNXHiRJlMJo0ZM0b/+Mc/9NVXX+nMM8/Uvn37dMkll+gPf/iD2rdvr6VLl3q6AJ5//vkaPny459uLkSNH6pVXXtHPP/+s33//XZ999pneeecddejQQZI0Y8YM7d+/X7GxsYqKilJMTIzatGnj1fgpKCjQJ598opycHE9jb968ebriiiu0Y8cOSVJ5ebkmT57smRCsf//+NV57SerSpYtmz56tnj17SpLGjBmjRYsWadeuXTrllFMkSddee60uuugiSVLv3r114MABT31dc801noafr2tVH9ddd50uu+wyT32NGzdO0uFulSaTSTabTbGxsdq3b5/MZrOn3u+77z79+c9/VmVlpYxG8s0AEEq0W46i3RK8dovFYlFsbKyMRmOtwzrOOuss3XzzzZKkK6+8Uo888oimTJmi6Oho3XzzzVqzZo0OHDigb775Rnv37tXq1atlMpkkSVlZWRo5cqTuv/9+7d27Vy1atFB8fLzatm2rGTNmaPfu3TW+JlAdyQdElCN/tG02m9f+Nm3a6Pbbb9eDDz6oJUuWKDk5Wddcc02d4+pOO+20Wh+zWCyeNxhJ6tatm5577rnjir2oqEi//vqrzj33XM++qKgo9ejRw6t7fkJCgudnm81W6+zVhYWFXseSDme+q3bnb6iqdXL66afLYrFoyZIl2rFjh3bs2KGdO3fqyiuv9Cp/5I1JkqxWq8rKyiRJ9957r2bNmuXpLnjllVeqR48ekg5/kH7vvff0yiuv6LvvvtO2bdskHe7euXPnTtlsNs8buCRdfPHFPmP/7rvvZLVaPW/gktSpUye1bt1ahYWFOuGEEyTVv34vu+wybd68WXPnztV3332nr7/+2hPjEe3bt/f8HB0drT/84Q9e20e+EQnEtar6WjabTZWVlaqoqPCqf+lwQ2zt2rUaOHCgzjnnHF166aW68cYbj2nIAQCCj3bLUbRbvAW63eJL1XZEixYtdOKJJyo6OlqSPP+XlpaqsLBQv/32m9fEqG63W2VlZfrxxx91880367333lP//v113nnn6U9/+pNuuOEGv2JC88PXYIgo33zzjSSpc+fOxzx233336a233tLw4cO1c+dOZWRkaM2aNbUe68gf2ppU/4a4srLS8+HNYDAcU74+bwS1vV5FRYUqKio829UnWaptgqWajnfkA6m/qh6zoKBAV155pXbs2KHzzz9fs2fPPqYbZE0TQh1x0003KTc3V+PGjVNxcbHuuOMOT5fDBx54QHPnzlVsbKyGDRvmNeayrmPWxWKx1Li/oqLCK2FQ3/p94okndN9998lkMunaa6/VqlWrjilT/QN9bT0LfF2r6vdUTfdTTedXU+xxcXFau3atli5dqnPPPVerVq3S9ddf7zVcBAAQGrRb6j4e7ZZj+dtu8aX6lxW1tVnKy8vVoUMHrVu3zvNv/fr1euedd3Tqqafq9NNP1z//+U8tWLBACQkJevrppzVkyJBa59ACqiL5gIiyZs0ade/e3St7K0n79+/XjBkzdNppp2n06NFasWKFBg0a5BlTX9Mbb11+//13rwmTvvzyS09mOioqyqvb3KFDh1RcXOzZru21YmNjddJJJ2nLli2efWVlZdq2bZs6duzYoPikw+NIqx5LOjyRU32P5atO1q9fr/POO0/z58/XTTfdpMTERO3Zs6deb3oul0uzZs2SwWBQRkaGnnvuOY0bN045OTmy2+1644039Pjjj+uee+7RwIEDdfDgQUmH31BPP/102e12r/p/5ZVXNHz48Dpfs1OnTnI4HF7fxuzcuVN2u92v+l25cqWmTp2qv/71r7ryyivldDo9MTaUr2tV/Z764YcfGvwaR3zwwQdatWqV+vfvr6lTp+rtt9+Ww+HQf/7zH7+PCQDwD+2Wo2i3eAt0u6Wh90xtOnbsqJ9++klt2rRRhw4d1KFDB+3fv1+PP/643G631q1bp/fee08DBw7U7NmztW7dOhUWFnoSbUBdSD4gbNntdu3fv1///e9/9c0332j27NnKycnxzOhfVevWrfXee+9p9uzZ2rNnj7Zu3arPPvtM3bt3lyS1bNlSP/74Y72//TUajZo4caK+/vprvf3223rppZc0YsQISdI555yjb7/9VuvXr9fu3buVlZXllT1u2bKl9u/fX+MHyJEjR+qpp55Sbm6uCgsLlZWVJZfLpauuuqrB9ZOenq5vv/1W8+fP165du7Ru3TqtWLHCM57Pl7rilA53Cf3222+1ZcsW7d69W3PnztWXX37p6Z5Yl+joaH3++eeaOXOm5w1p48aN6t69u6KjoxUTE6N33nlHe/fu1aZNm/TQQw9JOtzd78wzz9SFF16oKVOmqKCgQJ999pmWLFnimVvBarXq+++/V1FRkddrdurUScnJyZowYYK2bt2qrVu3asKECTr//PN19tln16tOqp9/Xl6efvjhB/3nP//xTAB1ZChFQ/i6Vuecc442bdqkTZs2aceOHZo1a1at34jUxGq16rvvvtOvv/6qyspKPfroo3r77be1d+9evf766yotLfWMiQUABAftlrrRbgluu6Vly5YqKSnRrl27/B6aIUkXXXSR2rdvr/vvv18FBQX64osvNHXqVBmNRkVHR6ukpESzZ8/Wpk2btHfvXq1Zs0YtW7bU6aef7vdrovkg+YCwNXfuXF100UXq37+/RowYoV27dumFF15Q7969jylbdYzfddddp9tvv139+vXTnXfeKenwxIDff/+9rrnmmnplwFu1aqVLL71Ut9xyix566CHdddddSklJkST17dtXo0aN0qxZszyTP5133nme5/75z3+W0WjUVVdddcwbza233qqhQ4dq+vTpGjRokH788UdlZ2frxBNPbHD9nHrqqXrmmWe0adMmXX311Vq8eLEmTJjgc3Kp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r39RXV3NT3/6U+BGocLzfqOmpobevXsDN4oMY8eOBeA73/kOYWE3vurce++9rFy5kqioKCoqKhg+fDhms5nvfe97HDx4kOLiYp5//nkeeOABZs2axc9//nOcTicWi6VpPX379uXatWs+3x4iHZmKDyKd2J49e5g+fTqZmZkA2O12nnzyyTabFMbHx/P3v/+dhIQErFYr586dIyYmhoiICCorK4mPj+fUqVPce++9AJhMptuWERISQmNjY/t/KBEREQkaLd0j3BQTE8N9991HQUEB4eHhFBcXNxUrburVqxfXr18HbrROKCsrY8KECZw6dQqn0wnA0qVL2b9/P2azmczMzKYfSJKTk9m0aRM1NTU89NBDnD17FpvNxsaNG/niiy9ISUlh/PjxwI0fbG4WOUTk61G3C5FObPfu3UyZMqVpOjIykokTJ3L58uVW35ecnMy1a9dITU0lPT2dn/3sZ/Tu3Zv09HReeukl5syZg8vlanUZsbGxnDt3jq1bt7bHRxEREZEOplevXjzzzDNYLBZmzpxJaWkp/fv3bzbPyJEjm7qMzpo1i4qKClJTU9m+fTvh4eEATJkyheTkZFJSUrDZbHzxxRfAjdYRly9fbhr8un///hw9epQZM2Ywf/585s2b17Se06dPM2LECD98apGOy+S+tW20iIiIiIhIkLDZbDz//PO8/fbbd/3exsZGUlNT2bx5c1P30JZcuHCBLVu2sHLlyv8lqkinp5YPIiIiIiISlKKjo5k6dSr79u27q/eVl5czbdo0pkyZ0mrhAaCwsJD58+f/LzFFBLV8EBEREREREREfU8sHEREREREREfEpFR9ERERERERExKdUfBARERERERERn1LxQURERERERER8SsUHEREREREREfGp/wJK3nm1Yd8+AwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1296x288 with 2 Axes>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "distribution_amount_times_fig"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The distribution of transaction amounts has most of its mass for small amounts. The distribution of transaction times  follows a gaussian distribution on a daily basis, centered around noon. These two distributions are in accordance with the simulation parameters used in the previous sections.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(Fraud_Scenarios_Generation)=\n",
    "## Fraud scenarios generation\n",
    "\n",
    "This last step of the simulation adds fraudulent transactions to the dataset, using the following fraud scenarios:\n",
    "\n",
    "* Scenario 1: Any transaction whose amount is more than 220 is a fraud. This scenario is not inspired by a real-world scenario. Rather, it will provide an obvious fraud pattern that should be detected by any baseline fraud detector. This will be useful to validate the implementation of a fraud detection technique.  \n",
    "\n",
    "* Scenario 2: Every day, a list of two terminals is drawn at random. All transactions on these terminals in the next 28 days will be marked as fraudulent. This scenario simulates a criminal use of a terminal, through phishing for example. Detecting this scenario will be possible by adding features that keep track of the number of fraudulent transactions on the terminal. Since the terminal is only compromised for 28 days, additional strategies that involve concept drift will need to be designed to efficiently deal with this scenario.     \n",
    "\n",
    "* Scenario 3: Every day, a list of 3 customers is drawn at random. In the next 14 days, 1/3 of their transactions have their amounts multiplied by 5 and marked as fraudulent. This scenario simulates a card-not-present fraud where the credentials of a customer have been leaked. The customer continues to make transactions, and transactions of higher values are made by the fraudster who tries to maximize their gains. Detecting this scenario will require adding features that keep track of the spending habits of the customer. As for scenario 2, since the card is only temporarily compromised, additional strategies that involve concept drift should also be designed. \n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "def add_frauds(customer_profiles_table, terminal_profiles_table, transactions_df):\n",
    "    \n",
    "    # By default, all transactions are genuine\n",
    "    transactions_df['TX_FRAUD']=0\n",
    "    transactions_df['TX_FRAUD_SCENARIO']=0\n",
    "    \n",
    "    # Scenario 1\n",
    "    transactions_df.loc[transactions_df.TX_AMOUNT>220, 'TX_FRAUD']=1\n",
    "    transactions_df.loc[transactions_df.TX_AMOUNT>220, 'TX_FRAUD_SCENARIO']=1\n",
    "    nb_frauds_scenario_1=transactions_df.TX_FRAUD.sum()\n",
    "    print(\"Number of frauds from scenario 1: \"+str(nb_frauds_scenario_1))\n",
    "    \n",
    "    # Scenario 2\n",
    "    for day in range(transactions_df.TX_TIME_DAYS.max()):\n",
    "        \n",
    "        compromised_terminals = terminal_profiles_table.TERMINAL_ID.sample(n=2, random_state=day)\n",
    "        \n",
    "        compromised_transactions=transactions_df[(transactions_df.TX_TIME_DAYS>=day) & \n",
    "                                                    (transactions_df.TX_TIME_DAYS<day+28) & \n",
    "                                                    (transactions_df.TERMINAL_ID.isin(compromised_terminals))]\n",
    "                            \n",
    "        transactions_df.loc[compromised_transactions.index,'TX_FRAUD']=1\n",
    "        transactions_df.loc[compromised_transactions.index,'TX_FRAUD_SCENARIO']=2\n",
    "    \n",
    "    nb_frauds_scenario_2=transactions_df.TX_FRAUD.sum()-nb_frauds_scenario_1\n",
    "    print(\"Number of frauds from scenario 2: \"+str(nb_frauds_scenario_2))\n",
    "    \n",
    "    # Scenario 3\n",
    "    for day in range(transactions_df.TX_TIME_DAYS.max()):\n",
    "        \n",
    "        compromised_customers = customer_profiles_table.CUSTOMER_ID.sample(n=3, random_state=day).values\n",
    "        \n",
    "        compromised_transactions=transactions_df[(transactions_df.TX_TIME_DAYS>=day) & \n",
    "                                                    (transactions_df.TX_TIME_DAYS<day+14) & \n",
    "                                                    (transactions_df.CUSTOMER_ID.isin(compromised_customers))]\n",
    "        \n",
    "        nb_compromised_transactions=len(compromised_transactions)\n",
    "        \n",
    "        \n",
    "        random.seed(day)\n",
    "        index_fauds = random.sample(list(compromised_transactions.index.values),k=int(nb_compromised_transactions/3))\n",
    "        \n",
    "        transactions_df.loc[index_fauds,'TX_AMOUNT']=transactions_df.loc[index_fauds,'TX_AMOUNT']*5\n",
    "        transactions_df.loc[index_fauds,'TX_FRAUD']=1\n",
    "        transactions_df.loc[index_fauds,'TX_FRAUD_SCENARIO']=3\n",
    "        \n",
    "                             \n",
    "    nb_frauds_scenario_3=transactions_df.TX_FRAUD.sum()-nb_frauds_scenario_2-nb_frauds_scenario_1\n",
    "    print(\"Number of frauds from scenario 3: \"+str(nb_frauds_scenario_3))\n",
    "    \n",
    "    return transactions_df                 \n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let us add fraudulent transactions using these scenarios:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of frauds from scenario 1: 978\n",
      "Number of frauds from scenario 2: 9099\n",
      "Number of frauds from scenario 3: 4604\n",
      "CPU times: user 1min 14s, sys: 210 ms, total: 1min 14s\n",
      "Wall time: 1min 15s\n"
     ]
    }
   ],
   "source": [
    "%time transactions_df = add_frauds(customer_profiles_table, terminal_profiles_table, transactions_df)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Percentage of fraudulent transactions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.008369271814634397"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "transactions_df.TX_FRAUD.mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Number of fraudulent transactions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "14681"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "transactions_df.TX_FRAUD.sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A total of 14681 transactions were marked as fraudulent. This amounts to 0.8% of the transactions. Note that the sum of the frauds for each scenario does not equal the total amount of fraudulent transactions. This is because the same transactions may have been marked as fraudulent by two or more fraud scenarios.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Our simulated transaction dataset is now complete, with a fraudulent label added to all transactions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TRANSACTION_ID</th>\n",
       "      <th>TX_DATETIME</th>\n",
       "      <th>CUSTOMER_ID</th>\n",
       "      <th>TERMINAL_ID</th>\n",
       "      <th>TX_AMOUNT</th>\n",
       "      <th>TX_TIME_SECONDS</th>\n",
       "      <th>TX_TIME_DAYS</th>\n",
       "      <th>TX_FRAUD</th>\n",
       "      <th>TX_FRAUD_SCENARIO</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>2018-04-01 00:00:31</td>\n",
       "      <td>596</td>\n",
       "      <td>3156</td>\n",
       "      <td>57.16</td>\n",
       "      <td>31</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>2018-04-01 00:02:10</td>\n",
       "      <td>4961</td>\n",
       "      <td>3412</td>\n",
       "      <td>81.51</td>\n",
       "      <td>130</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>2018-04-01 00:07:56</td>\n",
       "      <td>2</td>\n",
       "      <td>1365</td>\n",
       "      <td>146.00</td>\n",
       "      <td>476</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>2018-04-01 00:09:29</td>\n",
       "      <td>4128</td>\n",
       "      <td>8737</td>\n",
       "      <td>64.49</td>\n",
       "      <td>569</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>2018-04-01 00:10:34</td>\n",
       "      <td>927</td>\n",
       "      <td>9906</td>\n",
       "      <td>50.99</td>\n",
       "      <td>634</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   TRANSACTION_ID         TX_DATETIME CUSTOMER_ID TERMINAL_ID  TX_AMOUNT  \\\n",
       "0               0 2018-04-01 00:00:31         596        3156      57.16   \n",
       "1               1 2018-04-01 00:02:10        4961        3412      81.51   \n",
       "2               2 2018-04-01 00:07:56           2        1365     146.00   \n",
       "3               3 2018-04-01 00:09:29        4128        8737      64.49   \n",
       "4               4 2018-04-01 00:10:34         927        9906      50.99   \n",
       "\n",
       "  TX_TIME_SECONDS TX_TIME_DAYS  TX_FRAUD  TX_FRAUD_SCENARIO  \n",
       "0              31            0         0                  0  \n",
       "1             130            0         0                  0  \n",
       "2             476            0         0                  0  \n",
       "3             569            0         0                  0  \n",
       "4             634            0         0                  0  "
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "transactions_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(973, 9)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "transactions_df[transactions_df.TX_FRAUD_SCENARIO==1].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(9077, 9)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "transactions_df[transactions_df.TX_FRAUD_SCENARIO==2].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4631, 9)"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "transactions_df[transactions_df.TX_FRAUD_SCENARIO==3].shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let us check how the number of transactions, the number of fraudulent transactions, and the number of compromised cards vary on a daily basis. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "def get_stats(transactions_df):\n",
    "    #Number of transactions per day\n",
    "    nb_tx_per_day=transactions_df.groupby(['TX_TIME_DAYS'])['CUSTOMER_ID'].count()\n",
    "    #Number of fraudulent transactions per day\n",
    "    nb_fraud_per_day=transactions_df.groupby(['TX_TIME_DAYS'])['TX_FRAUD'].sum()\n",
    "    #Number of fraudulent cards per day\n",
    "    nb_fraudcard_per_day=transactions_df[transactions_df['TX_FRAUD']>0].groupby(['TX_TIME_DAYS']).CUSTOMER_ID.nunique()\n",
    "    \n",
    "    return (nb_tx_per_day,nb_fraud_per_day,nb_fraudcard_per_day)\n",
    "\n",
    "(nb_tx_per_day,nb_fraud_per_day,nb_fraudcard_per_day)=get_stats(transactions_df)\n",
    "\n",
    "n_days=len(nb_tx_per_day)\n",
    "tx_stats=pd.DataFrame({\"value\":pd.concat([nb_tx_per_day/50,nb_fraud_per_day,nb_fraudcard_per_day])})\n",
    "tx_stats['stat_type']=[\"nb_tx_per_day\"]*n_days+[\"nb_fraud_per_day\"]*n_days+[\"nb_fraudcard_per_day\"]*n_days\n",
    "tx_stats=tx_stats.reset_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "tags": [
     "hide-cell"
    ]
   },
   "outputs": [],
   "source": [
    "%%capture\n",
    "\n",
    "sns.set(style='darkgrid')\n",
    "sns.set(font_scale=1.4)\n",
    "\n",
    "fraud_and_transactions_stats_fig = plt.gcf()\n",
    "\n",
    "fraud_and_transactions_stats_fig.set_size_inches(15, 8)\n",
    "\n",
    "sns_plot = sns.lineplot(x=\"TX_TIME_DAYS\", y=\"value\", data=tx_stats, hue=\"stat_type\", hue_order=[\"nb_tx_per_day\",\"nb_fraud_per_day\",\"nb_fraudcard_per_day\"], legend=False)\n",
    "\n",
    "sns_plot.set_title('Total transactions, and number of fraudulent transactions \\n and number of compromised cards per day', fontsize=20)\n",
    "sns_plot.set(xlabel = \"Number of days since beginning of data generation\", ylabel=\"Number\")\n",
    "\n",
    "sns_plot.set_ylim([0,300])\n",
    "\n",
    "labels_legend = [\"# transactions per day (/50)\", \"# fraudulent txs per day\", \"# fraudulent cards per day\"]\n",
    "\n",
    "sns_plot.legend(loc='upper left', labels=labels_legend,bbox_to_anchor=(1.05, 1), fontsize=15)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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5O2d/uLj45g69SOKFy9O27btmTZtFmPHTmD37t+4cuUK3377DfXre/Phh1Np374Ddes+ZwpQjEajaXPt8PAwU503b96gefOmHD586KF9KF++PMnJycTERJuOZWRkEB4e9sBg6c8WL/6CI0eO0LhxE0aOHMU333yPwWDgt992PvCakyfDc7w+fvwYVapkz0gqV6480dFRuLt7mP5LTr7KnDmzuXXrZp7aVKlSZQCOHj1iOpaQkEBKSrLp9erVq+jdux/vvjuSV15pTdWqzxIXF8u94+bn50/hwjaEhAQTGxvLSy+1eOA9ixd3Ijn5qum10Whk795QfHzuhlMffDCSkSOH5bguPDyMggUL4ubmTo0atcjKyuLYsaOm80eOHMZoNFCjRq0c1yUnJ1OixP17beWFwikRERERERERMyhVyoXo6LP4+vrj7u5BUlIStWrVMQUguc1AurMMLDw8jFu3buVar4ODI0eOHOb06QhiY2NZtGgBP/+8hfT0jDy1y8HBga1btzBt2mSio6OIijrLzz9vwc3NDQcHBxwcHDlzJoLjx4+SkHCOkJCvWb16FQDp6el4eJShUaPGTJs2hcOHDxIdHcXEieOws7PH09ProX2oV68+1avXYOzYURw5cpjIyDNMnBjEjRvXad26TZ7an5iYwLRpkzlwYD+JiQls3ryRGzdu4OVV/YHX7N+/j2XLFhMbG8Pq1cFs3bqFjh27ANClS3dOnDjO7NkziI6O4uDBA4wfP5br16/nuvF5btzdPf54JpM5ePAAERGnmDBhTI6ZRg4Ojuzdu5vo6CjOno1k+vQpHDt2NMeyOisrawIDm7N06WJ8fBpSrFixB97T09OL06dPmV6fPBmOnZ0t7u53l0Q+/3xTdu7czqpVXxIfH8e2bT8zZ84sOnbsgq2tLc7OzjRt+iIffTSBI0cOc/jwISZPnkizZi1xdr47c8poNHLmTMRDn/HDKJwSERERERERMYM7s4PuzDQ6ceI41avXeOg1devWo3btuvTu3Z3vv/8u1zLDho2gSBF7evfuTt++bxIefoKRIz/g6tUrnD+fmOs197K3L8LMmXM4dy6enj270bNnV9LT05k5cw6Wlpb06fMWlStXZfDgAXTv3ont27eZ3rUuPPwEAGPGjMfT04sRI4bSs2c3MjIymD17LgULFnxoHywsLJgyZQZlypRj2LBB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E3FxcQHgwoULOcpcuHDhvqV+IiIiIiIi8u9mbW1NenqauZshIn8hPT3toZuqP/Vwat26dYwYMYLmzZuzYMEC7O3vJvZvv/02/fr1y1H+6NGjAFSsWJGqVatib2/Pvn37TOdv3LhBWFgY9evXfzodEBERERERkXyhZElnkpMvkZZ2+y9nZojI02c0GklLu01y8iVKlnR+YLmnuqzv/PnzjBkzhgYNGjB8+HCSk5NN56ytrWnRogVDhw7liy++oFmzZpw9e5YJEybw0ksvmWZQde7cmVmzZlGiRAnc3NyYMWMGJUuWJDAw8Gl2RURERERERMysaNGiACQlXSAjI8PMrRGR3FhbW+PiUsr09ZqbpxpObdmyhdTUVEJDQ/H3989xrk6dOgQHB2MwGFi0aBGfffYZRYoUoWXLlgwZMsRUbtCgQWRlZTF27FhSU1OpW7cuixYtum+TdBEREREREfn3K1q06EN/6RWR/M/C+D8691Ebosvj0Bjlbxqf/E9jlL9pfPI/jVH+pvHJ/zRG2f5tG6KLyH8/s2yILiIiIiIiIiIiAgqnRERERERERETEjBROiYiIiIiIiIiI2SicEhERERERERERs1E4JSIiIiIiIiIiZqNwSkREREREREREzEbhlIiIiIiIiIiImI3CKRERERERERERMRuFUyIiIiIiIiIiYjYKp0RERERERERExGwUTomIiIiIiIiIiNkonBIREREREREREbNROCUiIiIiIiIiImajcEpERERERERERMxG4ZSIiIiIiIiIiJiNwikRERERERERETEbhVMiIiIiIiIiImI2CqdERERERERERMRsFE6JiIiIiIiIiIjZKJwSERERERERERGzUTglIiIiIiIiIiJmo3BKRERERERERETMRuGUiIiIiIiIiIiYjcIpERERERERERExG4VTIiIiIiIiIiJiNgqnRERERERERETEbBROiYiIiIiIiIiI2SicEhERERERERERs1E4JSIiIiIiIiIiZqNwSkREREREREREzEbhlIiIiIiIiIiImI3CKRERERERERERMRuFUyIiIiIiIiIiYjYKp0RERERERERExGwUTomIiIiIiIiIiNkonBIREREREREREbNROCUiIiIiIiIiImajcEpERERERERERMxG4ZSIiIiIiIiIiJiNwikRERERERERETEbhVMiIiIiIiIiImI2CqdERERERERERMRsFE6JiIiIiIiIiIjZKJwSERERERERERGzUTglIiIiIiIiIiJmo3BKRERERERERETMRuGUiIiIiIiIiIiYjcIpERERERERERExG4VTIiIiIiIiIiJiNgqnRERERERERETEbBROiYiIiIiIiIiI2SicEhERERERERERs1E4JSIiIiIiIiIiZqNwSkREREREREREzEbhlIiIiIiIiIiImI3CKRERERERERERMRuFUyIiIiIiIiIiYjYKp0RERERERERExGwUTomIiIiIiIiIiNkonBIREREREREREbNROCUiIiIiIiIiImbz1MOpGzdu8NFHH9GkSRNq165NmzZt2Lp1q+l8eHg4Xbp0oVatWjRu3JjFixfnuN5gMPDpp5/i7+9PzZo16dGjBzExMU+7GyIiIiIiIiIi8gQ89XDq/fffZ/v27UyaNInvv/+ewMBABgwYwJ49e7hy5Qrdu3enTJkyfPvttwwePJhPP/2UkJAQ0/WfffYZwcHBTJo0idWrV1OgQAF69uxJWlra0+6KiIiIiIiIiIj8TVZP82YXL15ky5YtLFiwgIYNGwLw1ltvsWfPHtasWUOlSpWwtrZm3LhxWFlZUaFCBWJiYvjiiy9o164d6enpLFmyhHfffZeAgAAAZs2ahZ+fH5s2baJ169ZPszsiIiIiIiIiIvI3PdWZU4ULF2bhwoXUq1cvx3ELCwtSUlLYv38/9erVw8rqbmbWoEED4uLiSEpKIjw8nFu3buHt7W06b29vj6enJ/v3739q/RARERERERERkSfjqc6csre3p1GjRjmOHT58mNDQUEaPHs3q1aupWLFijvPOzs4AJCYmcuHCBQBKlix5X5nExMRHakvx4vaP2vynwsmpiLmbIH9BY5S/aXzyP41R/qbxyf80Rvmbxif/0xiJiOQ/TzWc+rPIyEgGDBhAzZo1ad++PcuXL6dgwYI5ytx5nZaWRmpqao5j95ZJT09/pHtfvnwDg8H4N1r/5Dk5FeHixevmboY8hMYof9P45H8ao/xN45P/aYzyN41P/qcxymZpaZFv/1gvIv+bnvqG6Hf8/vvvdOzYEScnJxYsWIC1tTU2Njb3hUx3Xtva2mJjY5Pj2L1lbG1tn07DRURERERERETkiTFLOLV27VrefPNNvLy8WLlyJQ4ODgCUKlXKtHTvjjuvS5Uq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kcJwioicDcMpJzIWdgrGOm4j5zbY9tF1mnE0tw6VDR2oU+tQp9ZCb7DgimmheOgCfalo+PA95Ny4fZwft5Fz+vxAMfacqsTrT16F5/99FJPHB1xUbz0aeXwPWTGcIiJn43y1tkREI8DLwwXX9jjyL0kSOnQmKDz5MUhERJdm8awI7DlViRfXHYPZLOLOEeyvSERENBb9+Jr+EBENA0EQ4KtwG/Y+U0REdPkJ9vPErIlKaDvNuHZ2FEKG8aQPRERElwOWDBARERERXaKfLIiBu4cLbpof4+ihEBER/eiwZICIiIiI6BKND/HB734+B14ePPZLREQ0VAyniIiIiIiIiIjIYRhOERERERERERGRwzCcIiIiIiIiIiIih2E4RUREREREREREDsNwioiIiIiIiIiIHIbhFBEREREREREROQzDKSIiIiIiIiIichiGU0RERERERERE5DAMp4iIiIiIiIiIyGEYThERERERERERkcMwnCIiIiIiIiIiIodhOEVERERERERERA7DcIqIiIiIiIiIiByG4RQRERERERERETkMwykiIiIiIiIiInIYhlNEREREREREROQwDKeIiIiIiIiIiMhhGE4REREREREREZHDMJwiIiIiIiIiIiKHYThFREREREREREQOw3CKiIiIiIiIiIgchuEUERERERERERE5DMMpIiIiIiIiIiJyGLvDqZycHIiiOJJjISIiIiIiIiKiy4zd4dRDDz2ELVu2jORYiIiIiIiIiIjoMmN3OOXm5gZ/f/+RHAsREREREREREV1mXOxd8emnn8af/vQnqNVqTJw4EUqlss86UVFRwzo4IiIiIiIiIiIa2+wOp1544QVYLBa89NJLEASh33UKCgqGbWBERERERERERDT22R1OrVmzZiTHQURERERERERElyG7w6lbbrllJMdBRERERERERESXIbvDKQAQRRF79uzBkSNH0NjYiN///vfIzMzE9OnTERcXN1JjJCIiIiIiIiKiMcrucEqj0eDhhx/GmTNnoFQqoVKpoNVqsXXrVqxZswabNm1CYmLiSI6ViIiIiIiIiIjGGJm9K77++usoLS3F5s2bceDAAUiSBAB46623EBUVhbfeemvEBklERERERERERGOT3eHU3r178etf/xozZ87sdba+gIAAPPzww8jMzByRARIRERERERER0dhldzil1WoRGhra72UKhQJ6vX7YBkVERERERERERJcHu8OphIQEbNu2rd/LvvvuO0yaNGnYBkVERERERERERJcHuxuiP/7443jiiSdw//33Y+nSpRAEAcePH8enn36KL774An//+99HcpxERERERERERDQG2V05tWTJErzxxhsoLy/Hyy+/DEmS8Prrr2P//v1Ys2YNrr322pEcJxERERERERERjUF2V04BwI033ogbb7wRZWVlaGlpga+vL+Li4iCT2Z1xERERERERERER2Qw5VWptbUV5eTkqKytRV1cHrVY7EuMiIiIiIiIiIqLLgN2VUxaLBW+99RY2bdrU68x8Hh4eeOSRR/CLX/xiRAZIRERERERERERjl93h1Ntvv413330Xq1evxrJlyxAUFASVSoUdO3bg7bffhre3N+69996RHCsREREREREREY0xdodTW7ZswSOPPIJf/epXtmWxsbGYPXs2vLy8sGHDBoZTREREREREREQ0JHb3nGptbcXMmTP7vWzhwoVQqVTDNigiIiIiIiIiIro82B1OLViwALt27er3skOHDiE1NXXYBkVERERERERERJeHQaf1ffHFF7Z/JyUlYe3atWhubsby5csRHByMtrY27N+/HwcOHMDzzz8/5Dtft24dDh48iM2bN9uW/eY3v+kTgoWEhODQoUMAAFEU8fbbb+Pzzz9He3s7UlJS8NJLLyE6OnrI909ERERERERERI41aDj1+9//vs+yI0eO4MiRI32Wv/jii7j99tvtvuOPPvoIb775Zp+pgkVFRXjyySdxxx132JbJ5XLbv9euXYvNmzfj1VdfRUhICN544w08+OCD2LVrF9zd3e2+fyIiIiIiIiIicrxBw6nvvvtu2O+woaEBL730Ek6ePInY2NhelxmNRpSXlyMpKQlKpbLPdY1GI9577z0888wzWLRoEQDgzTffxJVXXondu3djxYoVwz5eIiIiIiIiIiIaOYOGUxEREcN+h3l5eVAoFNi+fTvWrl2LiooK22UlJSUwm82Ij4/v97oFBQXQ6XSYN2+ebZm3tzemTJmCtLQ0hlNERERERERERD8yg4ZT5/v666+RkZGB9vb2PpcJgoDXXnvtgrexZMkSLFmypN/LioqK4OLignXr1uHw4cOQy+VYtGgRnnrqKfj4+KChoQGAtQdVT+PGjUNdXd1QHgoRERERERERETkBu8OpN954A//973/h5eUFf3//PpcLgnDJgzl37hwAIDIyEv/5z39QUVGB1157DYWFhdi4cSP0ej0AwM3Nrdf13NzcYDQah3RfQUHelzzekaBU+jh6CHQB3EbOjdvH+XEbOTduH+fHbeTcuH2cH7cREZHzsTuc2rp1K1auXIk1a9YMSxDVn6effhqPPvoofH19AQAJCQkIDg7GXXfdhczMTHh4eACw9p7qGVAZjUZ4eXkN6b7Uag1EURq+wQ8DpdIHTU0djh4GDYLbyLlx+zg/biPnxu3j/LiNnBu3j/PjNrKSyQSnPVhPRJcnmb0r6nQ6XHfddSMWTAGATCazBVPdJk2aBACoq6tDWFgYAKCxsbHXOo2NjX2m+hERERERERERkfOzO5xavHgxTp48OZJjwRNPPIHHH3+817Ls7GwAQHx8PBITE+Ht7Y1Tp07ZLtdoNMjPz8ecOXNGdGxERERERERERDT87J7W98ILL+Cee+5BfX09kpOT4enp2Wed22677ZIGc+ONN+I3v/kN3nnnHVx//fUoLS3FH//4R1x33XW2CqrVq1fjzTffRHBwMCIjI/HGG28gJCQEy5Ytu6T7JiIiIiIiIiKi0Wd3OLVv3z6UlZWhpKQEu3bt6nO5IAiXHE4tX74coihi/fr1WLt2LXx8fLB8+XL8+te/tq3z5JNPwmKx4MUXX4Rer0dKSgrWr1/fp0k6ERERERERERE5P0GSJLu6gi9evBgxMTF46qmnoFQq+10nIiJiWAc3ktgQnS4Gt5Fz4/ZxftxGzo3bx/lxGzk3bh/nx21kxYboRORs7K6camlpwcsvv4zk5OSRHA8REREREREREV1G7G6InpycjMLCwpEcCxERERERERERXWbsrpx69NFH8fTTT0OtViMlJQUKhaLPOvPnzx/WwRERERERERER0dhmdzh1//33AwDef/99vP/++7blgiBAkiQIgoCCgoLhHyEREREREREREY1ZdodTGzduHMlxEBERERERERHRZcjucGrOnDkjOQ4iIiIiIiIiIroM2R1Obdu27YLrrFix4pIGQ0RERERERERElxe7w6nnnnuu3+WCIEAQBMhkMoZTREREREREREQ0JHaHU3v37u2zTKPR4OTJk9i4cSPeeeedYR0YERERERERERGNfXaHU+PHj+93+ZQpU2CxWPDKK6/ggw8+GK5xERERERERERHRZUA2HDcydepUZGZmDsdNERERERERERHRZWRYwqlvvvkGvr6+w3FTRERERERERER0GbF7Wt/dd9/dZ5nFYkFDQwPq6+vx2GOPDevAiIiIiIiIiIho7LM7nJLJ+hZZyeVyTJ48GU888QRuvfXWYR0YERERERERERGNfXaHUx9++OFIjoOIiIiIiIiIiC5Dg4ZT9957r903JAgCNmzYcMkDIiIiIiIiIiKiy8eg4ZTJZIIgCIPewNmzZ6HRaCCXy4d1YERERERERERENPYNGk5t3rx5wMs0Gg1effVVZGRkICYmBq+++uqwD46IiIiIiIiIiMY2u3tO9XTixAk8//zzqK+vx7333ounn34a7u7uwz02IiIiIiIiIiIa44YUTnV2duKvf/0rNm/ejIiICGzcuBGpqakjNTYiIiIiIiIiIhrj7A6n0tLS8Pzzz6OqqgqrVq3Cs88+C09Pz5EcGxERERERERERjXEXDKeMRiP+9re/YcOGDQgLC8P777+PefPmjcbYiIiIiIiIiIhojBs0nMrOzsZvf/tblJeX4/bbb8dzzz0HLy+v0RobERERERERERGNcYOGU6tWrYIoivDx8UFJSQkefvjhAdcVBAGbNm0a9gESEREREREREdHYNWg4NWvWrNEaBxERERERERERXYYGDac+/PDD0RoHERERERERERFdhmSOHgAREREREREREV2+GE4REREREREREZHDMJwiIiIiIiIiIiKHYThFREREREREREQOw3CKiIiIiIiIiIgchuEUERERERERERE5DMMpIiIiIiIiIiJyGIZTRERERERERETkMAyniIiIiIiIiIjIYRhOERERERERERGRwzCcIiIiIiIiIiIih2E4RUREREREREREDsNwioiIiIiIiIiIHIbhFBEREREREREROQzDKSIiIiIiIiIichiGU0RERERERERE5DAMp4iIiIiIiIiIyGEYThERERERERERkcMwnCIiIiIiIiIiIodhOEVERERERERERA7DcIqIiIiIiIiIiByG4RQRERERERERETkMwykiIiIiIiIiInIYhlNEREREREREROQwDKeIiIiIHExsa4Bm87MQO1SOHgoRERHRqGM4RURERORglsYSSB1NsDSVOnooRERERKOO4RQRERGNGEk0O3oIPwqithkAILFyioiIiC5DDKeIiIho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UnhoK+aGbZwKnm87lsKx3BP0qN/VhdGJiIiIiIiIiFw8mjnlhqzpO6EgF0NUHIW2Qsf2NYfWUsfiT3xYaxdGJyIiIiIiIiJy8Sg55YYKD2xml48X7+z9D7a9S532Xde4L2ajuk1ERERERERELg/Kcrgh64HN/BwRiq/FQu+o7o7tZqOJbvUSXBiZiIiIiIiIiMjFpeSUm7GdPsLR0+nsCAnluno9uK5xH1eHJCIiIiIiIiJyyaggupspPPA76wK8MWCgW73Org5HREREREREROSSUnLKzeTu38SGAB9iQ1sR5BXo6nBERERERERERC4pJafciK0wn01Zu/nTaKBnVFdXhyMiIiIiIiIicskpOeVGclO3kuTvQaiHPzFBTV0djoiIiIiIiIjIJafklBvZmfITqd4WejTojtGgrhERERERERGRy58yIG7khyPbMNuha30VQhcRERERERGR2kHJKTfx5/FUNlpstPeuh6+Hj6vDERERERERERGpFkpOuYnkvavJNxrpGX2Vq0MREREREREREak2NTI5ZbPZmDVrFj169CA+Pp4RI0aQmprq6rAuSNP6HRkcGkt03XhXhyIiIiIiIiIiUm1qZHLqjTfeYMmSJUyZMoWlS5diMpkYOXIkeXl5rg6tyiIjWzKw7wOuDkNEREREREREpFrVuORUfn4+77zzDmPHjqVXr160aNGCGTNmcPToUb788ktXhyciIiIiIiIiIufB7OoAztf27dvJzs6mS5cujm1+fn60atWKDRs20L9//0qdx2g0XKoQL4i7xiV/UR+5N/WP+1MfuTf1j/tTH7k39Y/7Ux+pDUTE/dS45FRGRgYAERERTtvDw8NJS0ur9HmCgnwvalwXS0iIn6tDkAqoj9yb+sf9qY/cm/rH/amP3Jv6x/2pj0RE3E+NW9aXk5MDgMVicdpusVjIz893RUgiIiIiIiIiIlJFNS455eXlBVAiEZWfn4+Pj48rQhIRERERERERkSqqccmpunXrApCZmem0PTMzs8RSPxERERERERERcW81LjnVokUL/Pz8WL9+vWPbmTNn2LZtGwkJCS6MTEREREREREREzleNK4husVi48847mTFjBqGhoURFRTF9+nQiIiK45pprXB2eiIiIiIiIiIichxqXnAIYP348VquVp59+mpycHDp06MDcuXNLFEkXERERERERERH3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K0yaNMnV4bilkydPEhoayoABA1wdyiUVFxfn6hBcJiQkhJCQkEtybndr15MnTwJw22230bhxY9cGIyXExMS4OgQRERGpRbSsT0TcQrNmzbjlllt49913+fXXX8t9bGnLTVJTU4mJiWHZsmUArFu3jpiYGNauXcvdd99NfHw8vXv3ZunSpRw7doxHHnmEdu3a0b17d6ZNm1ai1sqRI0cYM2YMbdq0oWfPnrz66qsUFhY6Peb777/n5ptvpk2bNnTt2pVnnnmG06dPO/YvW7aMVq1a8fHHH9O9e3cSEhLYvHlzqa/p9OnTvPjii1x99dXExcVx44038sEHHzj29+nTh2XLlpGZmUlMTAwTJ04ss302btzIkCFDaNu2LVdffTVfffVVicccP36c//f//h9XXXUVsbGxJCQk8MADD3DgwAEAVq1aRUxMDD/++KPTcbt37yYmJobvvvsOgMWLF3PDDTfQpk0bunXrxsSJEzl69GiZsVXmmLOXnxUvs/z666955JFH6NChA+3bt+fhhx/m+PHjTuf97LPPGDhwIPHx8fTq1YupU6eSk5Pj2J+ens6ECRPo3Lkz8fHx3HnnnWUuJT3Xpk2bGDhwILGxsdx00018+umnTvttNhtz587lmmuuITY2lquvvpp58+aVeF99/PHHjtfev39/1q1bR6tWrRzv23OX9U2cOJFhw4axYsUKrr/+emJjY7nuuutYsWKF45zF7/X169dz33330bZtWzp37szTTz/t9Pqr2q7z5s2jb9++tGnThiFDhvDjjz8SExPDunXrymwvq9XKe++9R79+/Rz98dJLL5Gbm+t4XcXv4WuvvZY+ffqUea6MjAwefPBBOnXqROfOnZk1a1aJdrVarcyZM4ebbrqJNm3a0LZtWwYPHszatWsdbdS3b1+gaEZQ8TLhio4rT2XaZdeuXYwePZr27dvTrl07Ro0axZ49exz7z6cfqnq9qWrbnHudzcvL48033+S6664jLi6OxMREZs+ejdVqdTxm6NChPPnkkyxYsIC+ffsSFxfHgAED+OmnnypsTxEREandNHNKRNzGxIkT+eWXX3jiiSdYsWIFPj4+F3zOhx9+mBEjRjBy5EjmzZvH5MmT+fe//02vXr149dVXWblyJW+//TYtW7bkxhtvdBz3xhtvcP311zNr1iySk5OZPXs2BQUFPPbYYwB88cUX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lfH99987/fzZZ5/h6elJ27ZtueKKKwgNDeXAgQPExcU5/kVFRfHPf/6z0neAK9apUycyMjJK3KVwxYoVmM1m4uPjK32ubt26sXr1aqdk3Y4dOxx34QNITk7GZrMxZswYR2KqsLDQsTzo7MTfNddcQ0BAAJMnT8ZgMDgt63nooYe4//77gaKZH1dddZWjYPyhQ4dKja8qx1TkiiuuICgoiK+//tpp+5dffsk999zDyZMnSUhIYO/evTRq1Mipz7744gsWLFhQYibLuYrvTghF7fPll18SFxeHj48PnTp1AooSTWefOzs7m2nTppGZmUlkZCQNGzYsEeP5JAiqW4sWLfD39z/vmIuXp5476/Hzzz/HarWWWMJWnm7dupGens6GDRsc2/Ly8lizZo3j5z179pCVlcUdd9xBkyZNHDN1iu80Wfx+NplMTueu7HHnqmy7JCQksGvXLlq0aOH0vli4cKFjWV1lXMj1pqptc66EhARsNhtffPGF0/ZPPvkEKLksUUREROR8aeaUiLitCRMmsHr1avbt2+e0vU+fPnz//fdMnjyZa6+9lq1bt7J48eIqz5IqzapVq5g6dSo9e/bkp59+4oMPPmDs2LGOWSGPPPKIYxZR3759HUWSU1NTz7uQ+8BPlYIFAAAFs0lEQVSBA3nvvfcYO3Ys48aNo0GDBnz33XcsW7aM0aNHO9VvqcgDDzzAN998w9133819991HTk4Os2bNwtPT0/GYNm3aAEV3mBs0aBAnT57kvffeIyUlBSiqDVM8O8JisdCvXz8WLlzI3/72N6eZQV26dOGZZ57hueeeo3fv3uTk5DB37lyCgoJKneFR1WMqYjKZGDduHM8++yxPPvkk11xzDQcPHuTVV19lwIABREVFMXz4cFasWMFdd93F8OHDCQkJ4dtvv2XJkiU8+OCDFb53Xn/9daxWKw0aNGDJkiXs3bvXUUS9efPm9O/fn6effpoDBw4QHx/P/v37mTlzJqGhocTExGAwGBg/fjyPPvookyZN4tprr2XHjh289dZbwF9Ln9yJn58f99xzDzNnzsTb25vOnTvz66+/8v777wNlx9y0aVMGDBjAm2++SW5uLgkJCezYsYM333yTTp060bt370rHUPzeGz9+PA899BDBwcH8+9//5tSpU44ZRVdccQX+/v7Mnj0bk8mEh4cHK1euZPny5cBftY6K37tJSUm0bNmy0sdVtV3Gjh3LbbfdxogRI7jjjjvw9vbmo48+4quvvuLll1+udBuYTKYqX2+q2jbn3r2yZ8+edO7cmcmTJ5ORkUHLli359ddfmTdvHjfddJOjGLqIiIhIVSk5JSJuy8vLixdffJEhQ4Y4bR84cCAHDx7ko48+4uOPPyY+Pp7Zs2czYMCAi/bckyZN4quvvmLJkiWEhYUxceJEhg0b5tg/aNAg/Pz8ePvtt1m+fDk+Pj7Ex8czZcoUmjRpcl7P5e3tzcKFC3nllVd48803OX36NNHR0Tz33HPceuut53WuBg0asHjxYl566SUmTpyIv78/9957r9Msls6dO/P0008zf/58vvnmG0JDQ0lISGDYsGE88MADbNiwweluaH369GHhwoWOQujFBg8ejNVq5f333+ejjz7CbDbTsWNHpk6d6kjinasqx1TGHXfcga+vL/PmzeOTTz4hPDycO+64wzFLKzw8nPfff59XXnmFqVOnkpubS8OGDXnmmWdKvL9K89JLL/Hyyy+zd+9emjVrxuzZs52SaVOnTiU6Opply5bx5ptvEhQURGJiIg8++KAj0devXz+ys7OZN28eK1asoFmzZvzjH/9g0qRJJeqguYtRo0Zhs9lYunQp7777Lm3btuWxxx5j6tSp5cb8/PPP06hRIz766CMWLFhAeHg4d955J2PHjq1wls7ZPDw8mD9/Pi+99BLTp0/HarVyww030LJlS1auXAkUJYveeOMNXn75ZSZMmICvry8tW7Zk0aJF3HfffWzYsIHExET8/Py49957WbRoETt27ODzzz+v1HFVbZfmzZvz3nvv8eqrrzJp0iTsdjtNmjTh1Vdf5frrrz+PXqj69eZC2uZsBoOB2bNnM2vWLN577z2OHTtG/fr1eeihhxg5cuR5vRYRERGR0hjsla2GKSIitdILL7zADz/8wFdffXVRZ6fVNsuXLycuLs4pmfDDDz8wevRoPv300wrv6ljdCgsLWb58OVdeeSX16tVzbF+0aBFTp05l3bp1pdbYutypXUREREQuPs2cEhGRUi1cuJB9+/axZMkSR80pqbovv/ySWbNmMX78eCIjI9m/fz+vv/46V155pdslpqDo7noLFixg4cKFjBo1iqCgIHbu3MmsWbMYOHBgrU3AqF1ERERELj7NnBIRkVI99NBDrFq1ioEDB/LUU08pOXWBTpw4wfTp01m9ejXHjx8nNDSU6667jvHjx7vtsr4DBw7wyiuvsG7dOk6dOkW9evXo378/9913H2Zz7f37ltpFRERE5OJSckpERERERERERFzG/W4PJCIiIiIiIiIitYaSUyIiIiIiIiIi4jJKTomIiIiIiIiIiMsoOSUiIiIiIiIiIi6j5JSIiIiIiIiIiLjM/we5AKpgvOQXLAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1080x576 with 1 Axes>"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fraud_and_transactions_stats_fig"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This simulation generated around 10000 transactions per day. The number of fraudulent transactions per day is around 85, and the number of fraudulent cards around 80. It is worth noting that the first month has a lower number of fraudulent transactions, which is due to the fact that frauds from scenarios 2 and 3 span periods of 28 and 14 days, respectively. \n",
    "\n",
    "The resulting dataset is interesting: It features class imbalance (less than 1% of fraudulent transactions), a mix of numerical and categorical features, non-trivial relationships between features, and time-dependent fraud scenarios.\n",
    "\n",
    "Let us finally save the dataset for reuse in the rest of this book."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  Saving of dataset\n",
    "\n",
    "Instead of saving the whole transaction dataset, we split the dataset into daily batches. This will allow later the loading of specific periods instead of the whole dataset. The pickle format is used, rather than CSV, to speed up the loading times. All files are saved in the `DIR_OUTPUT` folder. The names of the files are the dates, with the `.pkl` extension."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "DIR_OUTPUT = \"./simulated-data-raw/\"\n",
    "\n",
    "if not os.path.exists(DIR_OUTPUT):\n",
    "    os.makedirs(DIR_OUTPUT)\n",
    "\n",
    "start_date = datetime.datetime.strptime(\"2018-04-01\", \"%Y-%m-%d\")\n",
    "\n",
    "for day in range(transactions_df.TX_TIME_DAYS.max()+1):\n",
    "    \n",
    "    transactions_day = transactions_df[transactions_df.TX_TIME_DAYS==day].sort_values('TX_TIME_SECONDS')\n",
    "    \n",
    "    date = start_date + datetime.timedelta(days=day)\n",
    "    filename_output = date.strftime(\"%Y-%m-%d\")+'.pkl'\n",
    "    \n",
    "    # Protocol=4 required for Google Colab\n",
    "    transactions_day.to_pickle(DIR_OUTPUT+filename_output, protocol=4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The generated dataset is also available from Github at `https://github.com/Fraud-Detection-Handbook/simulated-data-raw`."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
